package cn.tedu.csmall.stock.webapi.quartz.rabbit;

import cn.tedu.csmall.commons.pojo.stock.entity.Stock;
import cn.tedu.csmall.stock.webapi.quartz.config.RabbitMQConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

// Spring连接RabbitMQ也是通过我们添加的依赖实现的
// 所以要接收消息,当前类必须在Spring容器中
@Component
// 和kafka不同,RabbitMQ接收消息的监听配置要写在类上
@RabbitListener(queues = RabbitMQConfig.STOCK_QUEUE)
@Slf4j
public class RabbitMQConsumer {

    // 类上添加了监听的注解,但是不能指定收到消息后运行的方法
    // 所以我们要编写一个方法,并在方法前添加@RabbitHandler注解
    // 标记该方法是接收处理消息的方法
    // 一个类只能有一个标记为@RabbitHandler的方法
    // 方法的参数直接写发送的消息即可
    @RabbitHandler
    public void received(Stock stock){
        // stock对象就是发送过来的消息,直接使用即可,我们这里就是输出
        log.info("接收到消息:{}",stock);
    }

}
